// admin/system/model/sys_menu.go
package model

import (
	"time"
)

// SysMenu 菜单权限表
type SysMenu struct {
	MenuID     int64      `json:"menuId" gorm:"column:menu_id;primaryKey;autoIncrement;comment:菜单ID"`
	MenuName   string     `json:"menuName" gorm:"column:menu_name;size:50;not null;comment:菜单名称"`
	ParentName string     `json:"parentName" gorm:"column:parent_name;size:50;default:'';comment:父菜单名称"`
	ParentID   int64      `json:"parentId" gorm:"column:parent_id;default:0;comment:父菜单ID"`
	OrderNum   int        `json:"orderNum" gorm:"column:order_num;default:0;comment:显示顺序"`
	Path       string     `json:"path" gorm:"column:path;size:200;default:'';comment:路由地址"`
	Component  *string    `json:"component,omitempty" gorm:"column:component;size:255;comment:组件路径"`
	Query      *string    `json:"query,omitempty" gorm:"column:query;size:255;comment:路由参数"`
	RouteName  string     `json:"route_name" gorm:"column:route_name;size:50;default:'';comment:路由名称"`
	IsFrame    string     `json:"isFrame" gorm:"column:is_frame;size:1;default:'1';comment:是否为外链（0是 1否）"`
	IsCache    string     `json:"isCache" gorm:"column:is_cache;size:1;default:'0';comment:是否缓存（0缓存 1不缓存）"`
	MenuType   string     `json:"menuType" gorm:"column:menu_type;size:1;default:'';comment:类型（M目录 C菜单 F按钮）"`
	Visible    string     `json:"visible" gorm:"column:visible;size:1;default:'0';comment:显示状态（0显示 1隐藏）"`
	Status     string     `json:"status" gorm:"column:status;size:1;default:'0';comment:菜单状态（0正常 1停用）"`
	Perms      *string    `json:"perms,omitempty" gorm:"column:perms;size:100;comment:权限字符串"`
	Icon       string     `json:"icon" gorm:"column:icon;size:100;default:'#';comment:菜单图标"`
	CreateBy   string     `json:"createBy" gorm:"column:create_by;size:64;default:'';comment:创建者"`
	CreateTime *time.Time `json:"createTime,omitempty" gorm:"column:create_time;comment:创建时间"`
	UpdateBy   string     `json:"updateBy" gorm:"column:update_by;size:64;default:'';comment:更新者"`
	UpdateTime *time.Time `json:"updateTime,omitempty" gorm:"column:update_time;comment:更新时间"`
	Remark     *string    `json:"remark,omitempty" gorm:"column:remark;size:500;comment:备注"`
	Children   []SysMenu  `json:"children" gorm:"-"`
}

// TableName 获取表名
func (SysMenu) TableName() string {
	return "sys_menu"
}
